package shark.scheduler;

import shark.scheduler.spi.entity.ScheduledCron;

import java.util.List;

/**
 * 定时任务操作接口
 */
public interface SchedulerExecutor {
    /**
     * 开始任务
     * @param taskKey
     */
    void startTask(String taskKey) throws ClassNotFoundException;

    /**
     * 手动执行一次任务
     * @param taskKey
     * @throws ClassNotFoundException
     */
    void startOnceTask(String taskKey) throws ClassNotFoundException;

    /**
     * 新增定时任务
     * @param scheduledCron
     */
    void addTask(ScheduledCron scheduledCron) throws ClassNotFoundException;

    /**
     * 取消定时任务
     * @param taskKey
     */
    void cancelTask(String taskKey);

    /**
     * 暂停定时任务
     * @param taskKey
     */
    void pauseTask(String taskKey);

    /**
     * 扫描定时任务
     * @return
     */
    List<ScheduledCron> scanTask();
}
